/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.darthsys.webbotfile.portalfile;
import com.darthsys.webbotfile.portalfilebean.PortalComerMexDataBean;
import java.util.ArrayList;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
import org.apache.log4j.Logger;
import com.evolve.webbot.util.Utileria;
import com.darthsys.webbotfile.portalfilebean.PortalComerMexHeaderBean;
import java.io.PrintWriter;
import java.util.Date;
/**
 *
 * @author DarthAE
 */
public class ComerMexDataFile 
{   
     private String path;
     Utileria util = new Utileria();
     private SimpleDateFormat sdf01 = new SimpleDateFormat("MM");
     static Logger log = Logger.getLogger(ComerMexDataFile.class);
     
     public ComerMexDataFile(){}
     
     public ComerMexDataFile(String path)
     {
         this.path = path;
     }
    
     private ArrayList<String> getRecordsFromWebFile()
     {
         ArrayList<String> listaRegistros = new ArrayList<String>();
         boolean esInicioDatos = false;
         
         try{
              BufferedReader br = new BufferedReader(new FileReader(this.path));
              String linea = br.readLine();
              
             while (linea != null) 
             {
               if(linea.contains("TOTALES"))
               {
                   esInicioDatos = false;
               }    
               
               if(esInicioDatos)
               {  
                 /*comermexRecordList.add(getValues(linea.trim()));*/
                 /*log.info(linea);*/
                 listaRegistros.add(linea);
               }               
               
               if(linea.contains("Selec.")||
                  linea.contains("Meses consultados"))
               {
                    esInicioDatos = true; 
               }   
               
               linea = br.readLine();
             }
              
            }catch(IOException ioe){log.error("error al procesar archivo descargado portal comermex ",ioe);}
                  
         return listaRegistros;         
     }
     
     private PortalComerMexHeaderBean getDataFromWebFileArrayList(ArrayList<String> listaRegistros)
     {
         int i=0;
         
         PortalComerMexHeaderBean data = null;
         
         if(!listaRegistros.isEmpty())
         {
             data = new PortalComerMexHeaderBean();             
             ArrayList<PortalComerMexDataBean> listaDatos = new ArrayList<PortalComerMexDataBean>();
             data.setListaDatos(listaDatos);
             
             while(i < listaRegistros.size())
             {
                 if(i == 0)
                 {
                     data.setHeaderFecDatos(listaRegistros.get(i));
                 }
                 else
                 if(i==1)
                 {
                     data.setHeaderDatos(listaRegistros.get(i));
                 }
                 else
                 if(i>1)
                 {
                     data.setListaDatosDato(new PortalComerMexDataBean(util.getValues(listaRegistros.get(i))));
                 }                 
                 /*log.info(listaRegistros.get(i));*/
                 i++;
             }             
         }
         
         /*log.info(data.toString());*/
         
         return data;
     }
     
     private File writeComerMexDataFile(PortalComerMexHeaderBean dato, int idxFile)
     {
         File comerMexDataFile = new File(this.path.replace("vyc","data"));
         
         try{
               PrintWriter out     = new PrintWriter(comerMexDataFile);
              
               out.println(dato.getHeaderFecDatos());
               
               out.println(createComerMexFileHeader(dato.getHeaderFecDatos(),dato.getHeaderDatos(),idxFile));
               
               for(int i=0;i<dato.getListaDatos().size();i++)
               {
                 out.println(dato.getListaDatos().get(i).toString());
               }
               
//               System.out.println("LISTA DATO " +dato);//aqui trae los encabezados!!
              
               out.close();
               
             }catch(IOException ioe){log.error("error al generar archivo de datos comermex ",ioe);
         }
         
         log.info("archivo creado "+comerMexDataFile.getAbsolutePath());
         
         return comerMexDataFile;
     }
     
     private String createComerMexFileHeader(String fecHeader,String dataHeader,int idxFile)
     {
        String header ="";
        int numMes =0;
         
        log.info(fecHeader);
//        numMes = util.getNumMonthFromStrDate(fecHeader.substring((fecHeader.length()-10),fecHeader.length()));
//        header = createHeaderFileComerMex(numMes);
        log.info(dataHeader);
         
//        if(idxFile==0||idxFile==1||
//           idxFile==4||idxFile==5)
//        {
            header=dataHeader;
//        }
//        else
//        if(idxFile==2||idxFile==3||
//           idxFile==6||idxFile==7)
//        {
//            header="clave|sucursal"+header;
//        }
         
        return header;
     }
     
     public String createHeaderFileComerMex(int numMonth)
     {
         String header="";
         
         GregorianCalendar calendar = new GregorianCalendar();
         calendar.setTime(new Date());
         
         for(int i=7;i>0;i--)
         {
             calendar.add(calendar.MONTH,-1);
             log.info("mes en curso "+util.getNumMonthFromNumber(Integer.parseInt(sdf01.format(calendar.getTime()))));
             header=util.getNumMonthFromNumber(Integer.parseInt(sdf01.format(calendar.getTime())))+"|"+header;             
         }
         
         header="|"+header;

         log.info(header);
         
         return header;
     }
     
     public File createComerMexDataFile(int idxFile)
     {
         File comerMexDataFile = null;
         
         comerMexDataFile = writeComerMexDataFile(getDataFromWebFileArrayList(getRecordsFromWebFile()),idxFile);//Crea el archivo con su ruta final
         
         return comerMexDataFile;
     }
}
